package foroweb.controllers.secured;

import foroweb.controllers.ComprobarRol;
import foroweb.ejb.*;
import foroweb.entidades.Seccion;
import foroweb.entidades.Usuario;
import java.io.Serializable;
import java.util.*;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.*;
import javax.faces.context.FacesContext;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;

@ManagedBean
@ViewScoped
public class AdminUsuariosController implements Serializable{
    
    //Atributos
    @EJB
    private AccionUsuario au;
    @EJB
    private Busquedas buscar;
    private Usuario user;
    private List<Usuario> lu;

    //Constructores
    public AdminUsuariosController() throws Exception{
        ComprobarRol cr=new ComprobarRol();
        if(cr.checkRole("Administrador")){
            user=new Usuario();
        }else{
            throw new Exception("Debes ser un Administrador para acceder a este sitio");
        }
    }

    //Getters y Setters
    public List<Usuario> getLu() {
        lu=buscar.buscarUsuarios("");
        return lu;
    }
    public void setLu(List<Usuario> lu) {
        this.lu = lu;
    }
    public Usuario getUser() {
        return user;
    }
    public void setUser(Usuario user) {
        this.user = user;
    }

    //Metodos
    public String eliminarUsuario(Usuario u){
        au.borrar(u);
        return "adminUsuarios";
    }
    public String crearUsuario(){
        au.registrar(user);
        return "adminUsuarios";
    }
    public String cambiarRol(Usuario u,String rol){
        boolean sw=false;
        if(rol.equals("Estandar")){
            List<Seccion> ls=buscar.buscarSecciones("");
            Iterator i=ls.iterator();
            Seccion sec=null;
            while(i.hasNext() && sw==false){
                sec=(Seccion)i.next();
                if(sec.getModeradores().contains(u)){
                    sw=true;
                }
            }
        }
        if(sw){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"No se puede degradar a un moderador con secciones asignadas." ,null));
        }else{
            u.setRol(rol);
            au.modificar(u);
        }
        return "adminUsuarios";
    }
}
